<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        //使用var与使用let定义变量的区别
        // 1.let不允许在相同的作用域内，重复声明一个变量
        // var x=10;
        // console.log(x);
        // {
        //     var x=8;
        //     console.log(x);
        // }
        // console.log(x);

        // console.log("------------");

        // var y=6;
        // console.log(y);
        // {
        //     let y=3;
        //     console.log(y);
        // }
        // console.log(y);

        // 2.使用let命令在同一个作用域内，只能声明同一个变量。
        // function func(){
        //     let i=4;
        //     var i=1;        //报错
        // }
        // func();

        //3.var命令有声明提升，let命令没有声明提升。
        // console.log(x);
        // var x=10;

        // console.log(num);
        // let num=10;
      
        //块级作用域
        //内层变量覆盖外层变量
        // var a=100;
        // function f(){
        //     console.log(a);
        //     if(false){
        //         var a='ni hao';
        //     }
        // }
        // f()      //undefined

        //计数的循环变量泄露为全局变量
        // var str='welcome';
        // for(var i=0;i<str.length;i++)
        // {
        //     console.log(str[i]);
        // }
        // console.log(i);   //7

        //let为js新增了块级作用域
        function func(){
            let n='a';
            if(true){
                let n='b';
            }
            console.log(n);
        }
        func();          //a
    </script>   
</body>
</html>